package com.mtnz.njk.Util;

/**
 * 处理地址
 */
public class AdrCutUtil {

    public static AdrCutVo addToObject(String str) {
        AdrCutVo adrCutVo = new AdrCutVo();
        int indexZz = str.indexOf("自治区");
        int indexS = str.indexOf("省");
        int indexTb = str.indexOf("特别行政区");
        int indexZs1 = str.indexOf("北京市");
        int indexZs2 = str.indexOf("重庆市");
        int indexZs3 = str.indexOf("上海市");
        int indexZs4 = str.indexOf("天津市");
        //不存在
        if (!(indexZz < 0)) {
            //自治区
            // 市 自治洲  地区 盟iu
            String strs = str.substring(indexZz + 3, str.length());
            if (strs.indexOf("地区") > 0) {
                // 县 市
                adrCutVo.setCity(strs.substring(0, strs.indexOf("地区"))+"地区");
                String cityStr = strs.substring(strs.indexOf("地区") + 2);
                if (cityStr.indexOf("县") > 0) {
                    adrCutVo.setCounty(cityStr.substring(0, cityStr.indexOf("县"))+"县");
                    adrCutVo.setAddress(cityStr.substring(cityStr.indexOf("县") + 1));
                }
                if (cityStr.indexOf("市") > 0) {
                    adrCutVo.setCounty(cityStr.substring(0, cityStr.indexOf("市")));
                    adrCutVo.setAddress(cityStr.substring(cityStr.indexOf("市") + 1));
                }
            } else if (strs.indexOf("自治州") > 0) {
                // 市 县  自治县
                adrCutVo.setCity(strs.substring(0, strs.indexOf("自治州"))+"自治州");
                //获取出  市 或 县 或 自治县
                String cityStr = strs.substring(strs.indexOf("自治州") + 3);
                if (cityStr.indexOf("市") > 0) {
                    adrCutVo.setCounty(cityStr.substring(0, cityStr.indexOf("市"))+"市");
                    adrCutVo.setAddress(cityStr.substring(cityStr.indexOf("市") + 1));
                } else if (cityStr.indexOf("自治县") > 0) {
                    adrCutVo.setCounty(cityStr.substring(0, cityStr.indexOf("自治县"))+"自治县");
                    adrCutVo.setAddress(cityStr.substring(cityStr.indexOf("自治县") + 3));
                } else if (cityStr.indexOf("县") > 0) {
                    adrCutVo.setCounty(cityStr.substring(0, cityStr.indexOf("县"))+"县");
                    adrCutVo.setAddress(cityStr.substring(cityStr.indexOf("县") + 1));
                }
            } else if (strs.indexOf("市") > 0) {
                adrCutVo = cityCut(strs, "市", 1);
            } else if (strs.indexOf("盟") > 0) {
                //旗 市 县
                adrCutVo.setCity(strs.substring(0, strs.indexOf("盟")));
                String cityStr = strs.substring(strs.indexOf("盟") + 1);
                if (cityStr.indexOf("市") > 0) {
                    adrCutVo.setCounty(cityStr.substring(0, cityStr.indexOf("市"))+"市");
                    adrCutVo.setAddress(cityStr.substring(cityStr.indexOf("市") + 1));
                } else if (cityStr.indexOf("旗") > 0) {
                    adrCutVo.setCounty(cityStr.substring(0, cityStr.indexOf("旗"))+"旗");
                    adrCutVo.setAddress(cityStr.substring(cityStr.indexOf("旗") + 1));
                } else if (cityStr.indexOf("县") > 0) {
                    adrCutVo.setCounty(cityStr.substring(0, cityStr.indexOf("县"))+"县");
                    adrCutVo.setAddress(cityStr.substring(cityStr.indexOf("县") + 1));
                }
            }
            adrCutVo.setProvince(str.substring(0, indexZz)+"自治区");
        } else if (!(indexS < 0)) {
            String a = "";
            if (str.indexOf("自治州") > 0) {
                adrCutVo = cityCut(str.substring(indexS + 1, str.length()), "自治州", 3);
            } else if (str.indexOf("市") > 0) {
                adrCutVo = cityCut(str.substring(indexS + 1, str.length()), "市", 1);
            }
            adrCutVo.setProvince(str.substring(0, indexS)+"省");
        } else if (!(indexTb < 0)) {
            adrCutVo = cityCut(str, "特别行政区", 5);
            adrCutVo.setProvince("");
        } else if (!(indexZs1 < 0) || !(indexZs2 < 0) || !(indexZs3 < 0) || !(indexZs4 < 0)) {
            adrCutVo = cityCut(str, "市", 1);
            adrCutVo.setProvince("");
        }
        return adrCutVo;
    }

    /**
     * 正常市区截取
     *
     * @param str
     * @param type
     * @param index
     * @return
     */
    private static AdrCutVo cityCut(String str, String type, int index) {
        AdrCutVo adrCutVo = new AdrCutVo();
        //市
        try {
            adrCutVo.setCity(str.substring(0, str.indexOf(type))+type);
            String cityCounty = str.substring(str.indexOf(type) + type.length(), str.length());
            int indexX = cityCounty.indexOf("县");
            int indexQ = cityCounty.indexOf("区");
            int indexS = cityCounty.indexOf("市");
            //县区
            if (indexQ >= 0) {
                adrCutVo.setCounty(cityCounty.substring(0, indexQ)+"区");
                adrCutVo.setAddress(cityCounty.substring(indexQ + 1, cityCounty.length()));
            }
            if (indexX >= 0) {
                adrCutVo.setCounty(cityCounty.substring(0, indexX)+"县");
                adrCutVo.setAddress(cityCounty.substring(indexX + 1, cityCounty.length()));
            }
            if (indexS >= 0) {
                adrCutVo.setCounty(cityCounty.substring(0, indexS)+"市");
                adrCutVo.setAddress(cityCounty.substring(indexS + 1, cityCounty.length()));
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println(str);
            return new AdrCutVo();
        }
        return adrCutVo;
    }


    public static void main(String[] args) {
        String str = "香港特别行政区九龙城";
        AdrCutVo adrCutVo = AdrCutUtil.addToObject(str);
        System.out.println("省会----"+adrCutVo.getProvince());
        System.out.println("市区----"+adrCutVo.getCity());
        System.out.println("县区----"+adrCutVo.getCounty());
        System.out.println("地址----"+adrCutVo.getAddress());
    }


}
